package pres.lnk.learn.designpattern.m_proxy;

/**
 * <p>静态代理模式</p>
 * 实现被代理对象的接口，在实现方法里添加额外操作再调用被代理对象对应的方法
 * @Author lnk
 * @Date 2018/4/10
 */
public class UserDaoStaticProxy implements UserDao {
    /**
     * 被代理对象
     */
    private UserDao target;

    public UserDaoStaticProxy(UserDao userDao) {
        this.target = userDao;
    }

    @Override
    public void save() {
        /*
         * 在调用target之前和之后可做一些其它操作
         */
        System.out.println("open the transaction");
        target.save();
        System.out.println("commit the transaction");
    }

    @Override
    public void select() {
        target.select();
    }
}
